In computer systems, meeting the requirements for efficiency and speed can be a problem since a single physical CPU of a typical computer system is only capable of carrying out a single instruction at a time. A commonly employed solution to this problem is to include two or more physical CPUs (or computers) to increase the capacity of the computer system. With more than one CPU in such systems, the various tasks, typically referred to as processes that each would be assigned a unique symbolic process identifier (PID), that essentially comprise the computer programs operated by means of the CPUs, can be distributed among the CPUs to share the workload and to allow that more than one instruction can be carried out at the same time. Typically, in most systems the various processes will need to communicate for different purposes such as information exchange or signals receiving and transmitting, and when different processes are resident of different CPUs, such systems must also include means by which the different processes are allowed to communicate with one another without limiting inter process communication to processes with the same CPU allocation. It should be noted that in such systems it is assumed that the OS or any interrupt routines may also send signals, but only processes can receive signals. When the CPUs or computers of such systems operate autonomously and their OS do not include networking capabilities for “transparent” inter process signals communication across the system, other means for accomplishing inter process communication between processes of different CPUs or computers need to be provided.
Several solutions to facilitate inter process communication in multiprocessor or multi-computer systems of the kind mentioned above are known. Some solutions suggest the use of common memory for such communications, while others suggest the addition of other kinds of coupling between the processors in the system.
U.S. Pat. No. 5,062,040 discloses a multi-processing arrangement to ensure that signals are not lost and that duplicate signals are not processed, and a multiprocessor system being transparent to existing programs. A signal-handling code fragment is always executed on the processor local to the user portion of an extended process. The user's kernel must send the current signal result (that is, whether a signal has been received which is not being ignored) to a stub process with any stub packet, and any updated signal result must be sent to an active stub process, if any non-ignored signals are subsequently received by the user's process before the stub process responds. This is defined as the pseudo-signal state. Each kernel is arranged to maintain a linked list of table entries which have signals to be sent of forwarded and a system process running at base level that removes signals from the list and forwards them to the correct destination via a communication channel to each processor.
Accordingly, it is an object of the present invention to provide an arrangement for inter process communication across a multi-processor system with distributed processing, wherein processor and OS autonomy is maintained and wherein OS common control elements or information is not required.